#include <stdio.h>
#include <gmp.h>


int main(int argc, char* argv[])
{
	// MULTIPLY TWO NUMBERS
	mpz_t num1, num2, result;
	char input_str[1000];

	mpz_init(num1);
	mpz_init(num2);
	mpz_init(result);

	// No numbers given yet
	if(argc == 1){
		printf("Type first number: ");
		gets(input_str);
		mpz_set_str(num1, input_str, 10);

		printf("Type second number: ");
		gets(input_str);
		mpz_set_str(num2, input_str, 10);
	} else {
		mpz_set_str(num1, argv[1], 10);
		if(argv[2] != NULL){
			// both numbers given
			mpz_set_str(num2, argv[2], 10);
		} else {
			// only one number given
			printf("Type second number: ");
			gets(input_str);
			mpz_set_str(num2, input_str, 10);
		}
	}
	
	// num1 * num2
	mpz_mul(result, num1, num2);

	// print result
	gmp_printf("%Zd\n", result);

	mpz_clear(num1);
	mpz_clear(num2);	
	mpz_clear(result);
	return 0;
}